#include <list>
#include <iostream>

using namespace std;

void process(int);
void printList(list<int>&);

int main()
{
    list<int> lst = {1, 2, 3, 4, 5, 6, 7, 8, 9};
    while (!lst.empty())
    {
        process(lst.front());   // 对 ilist 的首元素进行一些处理
        lst.pop_front();        // 完成处理后删除首元素
    }
    printList(lst);

    lst = {1, 2, 3, 4, 5, 6, 7, 8, 9};
    auto it = lst.begin();
    while (it != lst.end())
        if (*it % 2)            // 若元素为奇数    
            it = lst.erase(it); // 删除此元素
        else
            ++it;
    printList(lst);

    lst = {1, 2, 3, 4, 5, 6, 7, 8, 9};
    list<int>::iterator elem1 = lst.begin();
    list<int>::iterator elem2 = lst.end();
    elem1 = lst.erase(elem1, elem2); // 调用后，elem1 == elem2
    printList(lst);

    lst = {1, 2, 3, 4, 5, 6, 7, 8, 9};
    lst.clear();                     // 删除容器中所有元素
    printList(lst);
}

void process(int ival)
{
    /* ... */
}

void printList(list<int>& lst)
{
    cout << "list: ";
    for (auto it = lst.cbegin(); it != lst.cend(); ++it)
        cout << *it << " ";
    cout << endl;
}